%\section{Model Verification}\label{sec:verification}
\subsection{Model Verification with the Same and Mixed Workloads}
We first verify the model with single benchmarks. We use benchmark \textcode{410.bwaves} as an example and present the model prediction and comparisons against measurements on the platform with a quad-core Ivy Bridge processor.

The model predictions match very well with actual measurements for various core speeds, as shown in \reffig{fig:SW_comparison}. \RefFigure{fig:SW_residual} shows that the maximum absolute residual is less than $0.25W$ and the maximum relative error is less than $4.2\%$ between the predictions and measurements. Furthermore, more than $98.6\%$ of the predicted values have a relative error within $3\%$; and the average absolute residual is less than $0.45\%$. Though not presented, tests with 28 SPEC 2006 benchmarks show similar model accuracy.

The actual power measurements also indicate that power has a strong linear relationship with  \AvgFreq and \DisparityMaxAvg, as shown in \reffig{fig:SW_surface} and \reffig{fig:SW_contour}.
From \reffig{fig:SW_surface}, one can observe a plane where CPU power increases linearly with \AvgFreq and \DisparityMaxAvg.
These results strongly support our multicore speed scaling power model $R1$.
\RefFigure{fig:SW_contour} shows parallel straight contour lines, which again reflect linear relationships.

\begin{figure}[htbp]
    \subfigure[Model prediction vs. actual power measurement]
    {
        \label{fig:SW_comparison}
        \includegraphics[width=0.22\textwidth]{IPDPS_410_bwaves_P0_DiffMaxAvg_Fitted_PP0}
    }
    \hspace{0.2in}
    \subfigure[The residuals distribution of our power model]
    {
        \label{fig:SW_residual}
        \includegraphics[width=0.19\textwidth]{IPDPS_410_bwaves_P0_DiffMaxAvg_Residual_PP0}
    }
    \subfigure[A fairly perfect power plane indicating power linearly increases with \AvgFreq and \DisparityMaxAvg]
    {
        \label{fig:SW_surface}
        \includegraphics[width=0.24\textwidth]{IPDPS_410_bwaves_P0_DiffMaxAvg_Surf_PP0}
    }
    \subfigure[Parallel straight contour lines on the power plane]
    {
        \label{fig:SW_contour}
        \includegraphics[width=0.17\textwidth]{IPDPS_410_bwaves_P0_DiffMaxAvg_Contour_PP0}
    }
%<<<<<<< .mine
%    \subfigure[The comparison between the measured power and the predicted power with our model]
%    {
%        \label{fig:SW_comparison}
%        \includegraphics[width=0.2\textwidth]{IPDPS_410_bwaves_P0_DiffMaxAvg_Fitted_PP0}
%    }
%    \hspace{0.2in}
%    \subfigure[The Residuals distribution of our power model]
%    {
%        \label{fig:SW_residual}
%        \includegraphics[width=0.2\textwidth]{IPDPS_410_bwaves_P0_DiffMaxAvg_Residual_PP0}
%    }
%    \caption{Evaluation on our power model with the same workload $410.bwaves$}
%=======

    \caption{Model verification with a single benchmark, \textcode{410.bwaves}, replicated on all cores}
%>>>>>>> .r595
    \label{fig:sameworkload}
\end{figure}

%\subsection{Evaluation with Mixed Benchmarks}
Another common scenario is to run different workloads on different cores.
We use mixed workloads to reflect such scenarios.
We observe similar model accuracy for a variety of mixed workloads.
For example, for a given mixed workload with the benchmarks, \{\textcode{410.bwaves}, \textcode{433.milc}, \textcode{437.leslie3d}, \textcode{444.namd}\}, running on the quad-core Ivy Bridge, the maximum absolute error is less than $0.31W$ and the maximum relative error is less than $4.3\%$. Furthermore, more than $98.5\%$ of the predicted values have a relative error within $3\%$, and the average relative error is less than $0.5\%$. Other mixed workloads with two and four different benchmarks exhibit similar degrees of accuracy.
%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%% Next Section
%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%
\subsection{Model Verification with the Same Speeds}
Based on our power model, if all the cores run at the same speed $\Freq$, then $\DisparityMaxAvg=0$ and CPU power is a linear function of \Freq. In such cases, our multiple linear power model, \refeq{eq:basic} is reduced to the following single linear model.
\begin{equation} \label{eq:simplified}
  \PowerMC(\Freq) = a_0 + a_1 \cdot \Freq
\end{equation}

The results in \reffig{fig:SameFrequencyResults} support this single linear power model when all cores run at the same speed.
Experimental data are collected in two different scenarios.
In the first scenario, some cores are idle and others are assigned benchmarks.
In the second scenario, all cores are assigned with the same benchmark.
\RefFigure{fig:OneCoreResults} shows an example of the first scenario, where seven cores on the octa-core platform are idle and only one core is assigned a benchmark, \textcode{458.sjeng}.
\RefFigure{fig:AllCoresResults} shows an example of the second scenario, where all the eight cores are assigned \textcode{458.sjeng}.
Power grows linearly with frequency in both examples, while power grows faster in the second example because more cores are being used.

\begin{figure}[htbp]
    \subfigure[All cores running at the same speed but only one core executing applications]
    {
        \label{fig:OneCoreResults}
        \includegraphics[width=0.2\textwidth]{IPDPS_Linear_458_sjeng_Fitted_PP0}
    }
    \hspace{0.1in}
    \subfigure[All cores runing at the same speed and executing applications]
    {
        \label{fig:AllCoresResults}
        \includegraphics[width=0.2\textwidth]{IPDPS_AllCoreLinear_458_sjeng_Fitted_PP0}
    }
    \caption{The relationship between power and cores' frequency when all the cores run at the same frequency}
    \label{fig:SameFrequencyResults}
\end{figure}
%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%% Next Section
%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%



